package com.zsrt.day20161013;

import java.util.Scanner;

import org.junit.Test;

public class ArrayDemo {
	/**
	 * 数组
	 */
	@Test
	public void arrayTest(){
		//1.数组怎么申明：[] 表示了数组 如果往数组里面放值 要用{}包起来
		String[] array ={"组1","组2","组3","组4"};
		//2.数组里面有几个数
		int geshu = array.length;
				System.out.println(geshu);
		
		//怎么得到数组中某个具体的数 比如 “组1”
		//重点：数组的下标是从0开始的
			  //得到数组中的一个数 ：如果得到第一个数 【】里面的值就是0 第n个数【】里面的值为n-1 得到最后一个数【】里面是数组长度length-1
		//面试题：请书写10个常见的异常   这里会有数组下表越界异常（ArrayIndexOutOfBoundsException）：数组中只有4个数 要输出第五个会为空--这是异常		
		String a = array[0];
		System.out.println(a);
		String last = array[geshu-1];
		System.out.println(last);
		
		//遍历数组中的每个值
		System.out.println("=====================");
		String lead;
		for(int index = 0;index<array.length;index++){
			lead = array[index];
			System.out.println(lead);
		}
		
		//用for的高级用法  遍历数组中的每个值 ：   for(类型 变量名称 ： 要遍历的对象){}
		System.out.println("for的高级用法来遍历数组中的各个值：");
		for( String leader: array){
			System.out.println(leader);
			
		}
	}
	
	/**
	 * 实现数组的增删改查
	 */
	@Test
	public void arrayCRUDTest(){
		//String[] leaders ={"组长1","组长2","组长3","组长4","组长5"};
		//需求：新增 在 数组的末尾 增加1个组长6
		//问? 逻辑思路： 1.数组一旦确定 就不能更改大小
		//           2.需要新建一个数组，新的数组长度要等于原来的数组长度+1
		//		     3.新加入的“组长6” 只能加在数组的末尾
		int[] ages= {22,27,23,31,27};
		int oldlength = ages.length;	
		int newlength = ages.length+1;	
		int[] newa =  new int[newlength];
		for(int i=0;i<oldlength;i++){
			newa[i] = ages[i];
		}
		Scanner shuru = new Scanner(System.in);
		 newa[newlength-1] = shuru.nextInt();
		if(newa[newlength-1] ==33){
		for(int i=0;i<newlength;i++){
			int b = newa[i];
			System.out.println(b);
		}
		
		}else{
			System.out.println("请输入33.。");
		}
	}
	
	/**
	 * 定义一个数组  ： int[] ages= {22,27,23,31,27}    把23 修改成32
	 */
	@Test
	public void updateArray(){
		Scanner shuru = new Scanner(System.in);
		int[] ages= {22,27,23,31,27};
		int oldlength = ages.length;
		for(int i=0;i<oldlength;i++){
			int search = ages[i];
			if(search == 23){
				ages[i]=32;
				break;
			}
			for(int aa:ages){
			System.out.print(aa+",");
			}
		}
	}
	/**
	 * String[] leaders = {"关琛","郑智强","曹耿珲","所志松","曾瑶"}; 
	 *  删除1个人  scanner  曹耿珲 判断有才删除  没有直接提示该用户不存在 不能删除  
	 *    如果有：新作1个数组  "关琛","郑智强"  下标  不变   后面的下标-1 
	 */
	
	@Test
	public void deleteArray(){
		String[] leaders = {"关琛","郑智强","曹耿珲","所志松","曾瑶"};
		Scanner shuru = new Scanner(System.in);
		System.out.println("请输入新删除的组长的名字。。。");
		String leader = shuru.next();
		shuru.close();
		for(int index=0;index<leaders.length;index++){
			String leader1 = leaders[index];   
			if(leader1.equals(leader)){
				//count = count+1;
				//System.out.println(count);
				System.out.println("找到该人，请删除。。。");
				String[] newleaders = new String[leaders.length-1];
				for(int newindex=0;newindex<newleaders.length;newindex++){
					if(newindex<index){
						newleaders[newindex] = leaders[newindex];
					}else {
						newleaders[newindex] = leaders[newindex+1];
					}
				}
				System.out.println("删除后的数组里的组长如下:");
				for(String shanchuhou:newleaders){
					System.out.println(shanchuhou);
				}
			}else{
				System.out.println("该用户不存在 不能删除。。。");
				break;
			}
		}
	}
}


